package cn.life.business.schedule.dao;

import cn.life.business.material.entity.vo.MaterialRecVo;
import cn.life.business.schedule.entity.po.Schedule;
import cn.life.business.schedule.entity.po.ScheduleAuditPo;
import cn.life.business.schedule.entity.vo.ScheduleVo;
import cn.life.common.entity.vo.Pagination;

import java.util.List;

/**
 * @author 王振宇
 * @Description:
 * @Date 2018-07-13 17:12:14
 */
public interface ScheduleDao {
    /**
     * @Description: 增加工厂项目进度记录
     * @param schedule
     * @return:
     * @Author 王振宇
     * @Date 2018-07-13
     */
    Long addSchedule(Schedule schedule);

    /**
     * @Description: 删除工厂项目进度记录
     * @param schedule
     * @return:
     * @Author 王振宇
     * @Date 2018-07-14
     */
    int deleteSchedule(Schedule schedule);

    /**
     * @Description: 修改工厂项目进度记录
     * @param schedule
     * @return:
     * @Author 王振宇
     * @Date 2018-07-14
     */
    int updateSchedule(Schedule schedule);

    /**
     * @Description: 查询工厂项目进度记录
     * @param scheduleVo
     * @return:
     * @Author 王振宇
     * @Date 2018-07-14
     */
    Pagination<ScheduleVo> selectSchedule(ScheduleVo scheduleVo);

    /**
     * @Description: 查询单条（详情页面）工厂项目进度记录
     * @param scheduleVo
     * @return:
     * @Author 王振宇
     * @Date 2018-07-18
     */
     ScheduleVo getSchedule(ScheduleVo scheduleVo);
    /**
     * @Description:    新增进度审核记录
     *
     * @param scheduleAuditPo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-21 上午 10:32
     */
    void addScheduleAuditRecord(ScheduleAuditPo scheduleAuditPo);
    /**
     * @Description:    修改进度审核结果状态位
     *
     * @param scheduleVo
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-25 上午 10:46
     */
    void updateScheduleAuditResult(ScheduleVo scheduleVo);
    /**
     * @Description:    作废所有审核记录
     *
     * @param recordId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-25 上午 10:55
     */
    void discardSchedlueAuditRec(Long recordId);
    /**
     * @Description:    待我审核的记录集合
     *
     * @param userId,scheduleName
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-25 上午 10:59
     */
    List<Schedule> queryRecordList(Long userId, String scheduleName,Long projectId);
    /**
     * @Description:    审核过的记录集合
     *
     * @param userId,scheduleName
     * @return:
     *
     * @Author 李佳明
     * @Date 2018-09-25 上午 10:59
     */
    List<Schedule> queryOprRecordList(Long userId, String scheduleName,Long projectId);
    /**
     * @Description:    查询最后的月报数据
     *
     * @param scheduleName,projectId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/12/1 0001 10:07
     */
    List<Schedule> queryLastRecordList(Long userId,String scheduleName, Long projectId,Integer auditState,String projectName);
    /**
     * @Description: 修改驳回意见
     *
     * @param recordId,reason
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/12/1 0001 23:05
     */
    void updateScheduleReason(long recordId, String reason);
    /**
     * @Description: 项目看板
     *
     * @param userId,scheduleName,projectId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/12/3 0003 22:44
     */
    List<Schedule> queryLastRecordStatisticsList(Long userId, String scheduleName, Long projectId);
    /**
     * @Description:    查询当前月份月报份数
     *
     * @param projectId
     * @return:
     *
     * @Author 李佳明
     * @Date 2018/12/13 0013 20:34
     */
    Integer queryNowMonthNumber(Long projectId);
}
